/**
 今日工作项接口
 **/
import { http } from "@/utils/http";
// 参数接口
export interface PageParams {
  /* */
  factoryId?: string;

  /* */
  pageNum?: number;

  /* */
  pageSize?: number;

  /* */
  orderByColumn?: string;

  /* */
  isAsc?: string;

  /*开始时间 */
  startTime?: Record<string, unknown>;

  /*结束时间 */
  endTime?: Record<string, unknown>;

  /* */
  orderBy?: string;
}

// 响应接口
export interface PageRes {
  /* */
  pageNum: number;

  /* */
  pageSize: number;

  /* */
  total: number;

  /* */
  pages: number;

  /* */
  data: {
    /*主键 */
    id: number;

    /*类型 */
    itemType: string;

    /*类型 */
    itemTypeDesc: string;

    /*时间 */
    time: Record<string, unknown>;

    /*区域 */
    positionCodes: Record<string, unknown>[];

    /*区域 */
    positionCodesDesc: Record<string, unknown>[];

    /*原因 */
    reason: string;

    /*申请部门 */
    deptName: string;

    /*申请人id */
    applicantId: number;

    /*申请人 */
    applicantName: string;

    /*ERC人员id */
    ercId: number;

    /*ERC人员 */
    ercName: string;

    /*备注 */
    remark: string;

    /*完结状态：ongoing，Done */
    finishStatus: string;

    /*创建人id */
    createBy: number;

    /*创建人名称 */
    createByName: string;

    /*更新人id */
    updateBy: number;

    /*更新人名称 */
    updateByName: string;

    /*创建时间 */
    createTime: Record<string, unknown>;

    /*修改时间 */
    updateTime: Record<string, unknown>;
  }[];
}

/**
 * 分页查询
 * @param {object} params 今日工作项
 * @param {string} params.factoryId
 * @param {number} params.pageNum
 * @param {number} params.pageSize
 * @param {string} params.orderByColumn
 * @param {string} params.isAsc
 * @param {object} params.startTime 开始时间
 * @param {object} params.endTime 结束时间
 * @param {string} params.orderBy
 * @returns
 */
export function page(data: PageParams): Promise<PageRes> {
  return http.post(`/erc/workItem/pageWorkItems`, { data });
}
// 参数接口
export interface DelWorkItemParams {
  /* */
  factoryId?: string;

  /*ID */
  id: number;
}

/**
 * 删除
 * @param {object} params 删除&详情知识库
 * @param {string} params.factoryId
 * @param {number} params.id ID
 * @returns
 */
export function delWorkItem(data: DelWorkItemParams): Promise<boolean> {
  return http.post(`/erc/workItem/delWorkItem`, { data });
}
// 参数接口
export interface SaveParams {
  /* */
  factoryId?: string;

  /*类型 */
  itemType: string;

  /*时间 */
  time: Record<string, unknown>;

  /*区域 */
  positionCodes: Record<string, unknown>[];

  /*原因 */
  reason: string;

  /*申请人id */
  applicantId: number;

  /*ERC人员id */
  ercId: number;

  /*备注 */
  remark: string;
}

/**
 * 新增
 * @param {object} params 今日工作项
 * @param {string} params.factoryId
 * @param {string} params.itemType 类型
 * @param {object} params.time 时间
 * @param {array} params.positionCodes 区域
 * @param {string} params.reason 原因
 * @param {number} params.applicantId 申请人id
 * @param {number} params.ercId ERC人员id
 * @param {string} params.remark 备注
 * @returns
 */
export function save(data: SaveParams): Promise<boolean> {
  return http.post(`/erc/workItem/saveWorkItem`, { data });
}
// 参数接口
export interface SetDoneParams {
  /* */
  factoryId?: string;

  /*ID */
  id: number;
}

/**
 * 完成工作项
 * @param {object} params 删除&详情知识库
 * @param {string} params.factoryId
 * @param {number} params.id ID
 * @returns
 */
export function setDone(data: SetDoneParams): Promise<boolean> {
  return http.post(`/erc/workItem/setWorkItemDone`, { data });
}
// 参数接口
export interface UpdateParams {
  /* */
  factoryId?: string;

  /*主键 */
  id: number;

  /*类型 */
  itemType?: string;

  /*类型 */
  time?: Record<string, unknown>;

  /*区域 */
  positionCodes?: Record<string, unknown>[];

  /*原因 */
  reason?: string;

  /*申请人id */
  applicantId?: number;

  /*ERC人员id */
  ercId?: number;

  /*备注 */
  remark?: string;
}

/**
 * 编辑
 * @param {object} params 今日工作项
 * @param {string} params.factoryId
 * @param {number} params.id 主键
 * @param {string} params.itemType 类型
 * @param {object} params.time 类型
 * @param {array} params.positionCodes 区域
 * @param {string} params.reason 原因
 * @param {number} params.applicantId 申请人id
 * @param {number} params.ercId ERC人员id
 * @param {string} params.remark 备注
 * @returns
 */
export function update(data: UpdateParams): Promise<boolean> {
  return http.post(`/erc/workItem/updateWorkItem`, { data });
}
// 参数接口
export interface ExportParams {
  /* */
  factoryId?: string;

  /* */
  pageNum?: number;

  /* */
  pageSize?: number;

  /* */
  orderByColumn?: string;

  /* */
  isAsc?: string;

  /*开始时间 */
  startTime?: Record<string, unknown>;

  /*结束时间 */
  endTime?: Record<string, unknown>;

  /* */
  orderBy?: string;
}

/**
 * ERC今日工作项导出
 * @param {object} params 今日工作项
 * @param {string} params.factoryId
 * @param {number} params.pageNum
 * @param {number} params.pageSize
 * @param {string} params.orderByColumn
 * @param {string} params.isAsc
 * @param {object} params.startTime 开始时间
 * @param {object} params.endTime 结束时间
 * @param {string} params.orderBy
 * @returns
 */
export function exportWorkItem(data: ExportParams) {
  return http.post(`/erc/workItem/exportWorkItem`, { data });
}
// 参数接口
export interface QueryUserListParams {
  /* */
  factoryId?: string;

  /* */
  pageNum?: number;

  /* */
  pageSize?: number;

  /* */
  orderByColumn?: string;

  /* */
  isAsc?: string;

  /*公告标题 */
  name?: string;

  /* */
  orderBy?: string;
}

// 响应接口
export interface QueryUserListRes {
  /* */
  pageNum: number;

  /* */
  pageSize: number;

  /* */
  total: number;

  /* */
  pages: number;

  /* */
  data: {
    /*Uac员工id */
    userId: number;

    /*Uac员工姓名 */
    username: string;

    /* */
    realName: string;

    /* */
    nickName: string;

    /* */
    sex: number;

    /* */
    phone: string;

    /* */
    email: string;

    /* */
    empNo: string;

    /* */
    deptId: number;

    /* */
    deptName: string;

    /* */
    positionIdList: Record<string, unknown>[];
  }[];
}

/**
 * 根据真实姓名或工号查询用户
 * @param {object} params 用户查询
 * @param {string} params.factoryId
 * @param {number} params.pageNum
 * @param {number} params.pageSize
 * @param {string} params.orderByColumn
 * @param {string} params.isAsc
 * @param {string} params.name 公告标题
 * @param {string} params.orderBy
 * @returns
 */
export function queryUserList(data: QueryUserListParams): Promise<QueryUserListRes> {
  return http.post(`/account/api/v1/user/queryUserList`, { data });
}
